package com.gqh.weather.domain.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;

import com.gqh.weather.domain.dto.PcSubTaskListDataDTO;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;

/**
 * @description 测评任务管理实体类
 * @author AI
 * @date 2025-09-21
 */
@Getter
@Setter
@TableName("zh_task")
public class Task {

    /**
     * 自增ID
     */
    @TableId
    private Integer id;

    /**
     * 任务名称
     */
    @JsonProperty("name")
    private String name;

    /**
     * 学年
     */
    @JsonProperty("school_year")
    private Integer schoolYear;

    /**
     * 年级
     */
    @JsonProperty("grade")
    private Integer grade;

    /**
     * 测评方式(0抽测 1统测)
     */
    @JsonProperty("type")
    private Integer type;

    /**
     * 总分值
     */
    @JsonProperty("total_score")
    private Integer totalScore;

    /**
     * 测评内容
     */
    @JsonProperty("content")
    private String content;

    /**
     * 测评开始时间
     */
    @JsonProperty("start_at")
    private Long startAt;

    /**
     * 测评结束时间
     */
    @JsonProperty("end_at")
    private Long endAt;

    /**
     * 学校锁定状态(0未锁定1已锁定)
     */
    @JsonProperty("school_state")
    private Integer schoolState;

    /**
     * 学生锁定状态(0未锁定1已锁定2已抽签)
     */
    @JsonProperty("student_state")
    private Integer studentState;

//    /**
//     * 准考证PDF文件URL
//     */
//    @JsonProperty("admission_ticket_url")
//    private String admissionTicketUrl;
//
//    /**
//     * 考务包URL
//     */
//    @JsonProperty("package_url")
//    private String packageUrl;

    /**
     * 状态(0未发布1已发布2结束)
     */
    @JsonProperty("state")
    private Integer state;

    /**
     * 创建者id
     */
    @JsonProperty("created_by")
    private Integer createdBy;

    /**
     * 删除状态(0正常 1删除)
     */
    @TableLogic
    @JsonIgnore
    @TableField("is_deleted")
    private Integer isDeleted = 0;

    /**
     * 创建时间
     */
    @JsonIgnore
    @TableField(value = "created_time", fill = FieldFill.INSERT)
    private Long createdTime;

    /**
     * 更新时间
     */
    @JsonIgnore
    @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
    private Long updatedTime;

    /**
     * 学生总数（瞬态字段，不存储在数据库）
     */
    @TableField(exist = false)
    @JsonProperty("student_count")
    private Integer studentCount;

    /**
     * 抽测学生总数（瞬态字段，不存储在数据库）
     */
    @TableField(exist = false)
    @JsonProperty("cc_student_count")
    private Integer ccStudentCount;

    /**
     * 任务动态状态（瞬态字段，不存储在数据库）
     * 0:未开始 1:进行中 2:已结束
     * 基于当前时间和任务时间范围计算
     */
    @TableField(exist = false)
    @JsonProperty("task_state")
    private Integer taskState;

    /**
     * 城市名称
     */
    @TableField(exist = false)
    @JsonProperty("city_name")
    private String cityName;

    /**
     * 子任务实体类
     */
    @TableField(exist = false)
    @JsonProperty("sub_task_dto")
    private PcSubTaskListDataDTO subTaskDTO;
}